The present invention relates generally to relative-pointing devices, and more specifically to apparatus and method for improving a positioning of a cursor controlled by a relative-pointing device.
It is well known in the art to use a relative-pointing device (RPD), such as a trackball or a mouse, with a computer system. An application or an operating system permitting use of the RPD provides a user with one mechanism to control and input information into the computer system by its use. Some applications and operating systems, such as those designed for use with Macintosh.RTM. computers from Apple Computer of Cupertino, Calif., or those running under Microsoft Windows, from Microsoft Corporation of Redmond, Wash., use graphical user interfaces (GUIs). A GUI relies heavily on RPD input, allowing the user to perform many functions by use of the RPD. In some instances, there is no substitute for the information provided by the RPD.
Presented at various locations on a monitor of the computer system are various symbols or objects. Associated with these symbols and objects are particular functions or features the application or operating system performs upon their selection. Selection of a particular symbol or object results from positioning the cursor over the symbol or object and signalling the computer system. Signalling typically results from activation of a switch of the RPD.
In operation, the application or the operating system will present a cursor on a monitor of the computer system. Manipulation of the RPD issues cursor positioning signals to the computer system. The RPD, being a relative device, provides cursor positioning signals as deltas for X and Y. That is, the data provided by the RPD includes a delta X value representing a change in an X position of the RPD, and a delta Y value representing a change in a Y position of the RPD. A special routine of the GUI, known as a cursor driver, receives these signals and translates them into signals the computer system uses to present the cursor at a new location. Movement of the cursor presented on the monitor corresponds to the delta X and delta Y signals. Typically, communications hardware (e.g., a serial I/O port) in the computer is connected to the RPD. When the RPD sends data to the communications hardware, the communications hardware interrupts any program the computer system's central processing unit is executing and passes control to the cursor driver. The cursor driver processes the data and returns control to the interrupted program. This interrupt driven system is typical of IBM-PC compatible systems. For Macintosh-type computer systems, servicing of RPD data is periodic. Either method is possible in a given implementation.
The cursor driver for the cursor positioning signals operates by periodically interrupting the computer system to check whether the RPD indicates a new position, and if so, the magnitude of any change. Cursor drivers rarely perform processing of the positioning signals beyond simple translation of the positioning signals to computer data so as to not degrade computer performance. One example of enhanced processing of the cursor positioning signals includes multiplying the delta X and delta Y values by a particular value when the deltas exceed one or more predetermined thresholds, with a threshold measured in units per cycle period. This enhancement to cursor positioning processes permits direct control for slow movements of the RPD, and magnified positioning for fast movements of the RPD.
The magnification of cursor positioning signals for fast cursor movement is important for those applications and operating systems that extensively use the RPD. The magnification feature permits rapid movement of the cursor from one position on the monitor to another remote position. Efficiency in using the RPD with the computer system results directly from being able to rapidly and accurately position the cursor to desired locations on the monitor.
Cursor drivers for the RPD, not being an integral part of the operating system, coexist with the operating system processes and other applications processed by the computer system. This coexistence requires that processing by the cursor driver not adversely impact performance or memory requirements of the computer system. Providing fast processing of the cursor positioning signals through use of minimal code is an important consideration for these cursor drivers. Extensive processing of the cursor positioning signals is not possible if the cursor driver is to meet its goal of minimal impact on computer system performance.
One disadvantage with prior art RPD and cursor driver systems is that accurate cursor positioning, directly to a particular desired location, is inefficient. The user is able to position the cursor close to the desired location, but overshoot or undershoot prevent the user from precise positioning of the cursor. Maneuvering the cursor directly to the desired location must be done with care, requiring slower action. This slows productivity when the computer system requires the user to concentrate on accurate placement of the cursor. It would be better if the cursor could be properly positioned without effort from the user.
Another disadvantage of prior art RPD and cursor driver systems used for cursor control is that the cursor position is required to change from position to position, anywhere on the monitor. As monitors become larger, positioning the cursor over wide areas requires more time and effort. Some computer systems employ multiple monitors. Cursor positioning signals from the RPD move the cursor between the monitors, just as though the monitors were extensions of each other. That is, for dual monitors set up for side-by-side operation, when the cursor begins at the left edge of the left-most one of the dual monitors, the user must position the cursor, via cursor positioning signals, completely across the first monitor and then on to the second monitor. It can be time-consuming to move the cursor between the different monitors.
Many prior art applications which use the RPD have specialized and unique activation procedures for implementing common functions. For example, many drawing applications allow a user to constrain cursor movement to a particular direction even though the cursor positioning signals indicate a different direction. That is, a user is able to constrain cursor motion in an X-only direction, even though the RPD may include a Y-component in the cursor positioning signal.
It is inconvenient to the user when different applications implement these procedures in different ways, or when the procedures are not available to all applications using the operating system. Additionally, there are some desirable procedures not available in some applications that are available in others. An improvement in user efficiency and productivity result from consistent interfaces and feature sets.